package cn.lrwjz.androidguide.adapter;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

import cn.lrwjz.androidguide.R;
import cn.lrwjz.androidguide.model.ListItem;

/**
 * 列表适配器
 * 用于将数据绑定到列表视图上
 */
public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ListViewHolder> {
    // 列表数据
    private List<ListItem> items;
    // 项目点击监听器
    private OnItemClickListener listener;

    /**
     * 构造函数
     * @param items 列表数据
     */
    public ListAdapter(List<ListItem> items) {
        this.items = items;
    }

    /**
     * 创建ViewHolder
     * 在列表项被创建时调用
     */
    @NonNull
    @Override
    public ListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        // 加载列表项布局
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.item_list, parent, false);
        return new ListViewHolder(view);
    }

    /**
     * 绑定ViewHolder
     * 在列表项需要显示数据时调用
     */
    @Override
    public void onBindViewHolder(@NonNull ListViewHolder holder, int position) {
        // 获取当前位置的数据
        ListItem item = items.get(position);
        
        // 设置图标
        holder.iconView.setImageResource(item.getIconResId());
        // 设置标题
        holder.titleText.setText(item.getTitle());
        // 设置描述
        holder.descriptionText.setText(item.getDescription());

        // 设置点击事件
        if (listener != null) {
            holder.itemView.setOnClickListener(v -> 
                listener.onItemClick(item, position));
        }
    }

    /**
     * 获取列表项数量
     */
    @Override
    public int getItemCount() {
        return items.size();
    }

    /**
     * 设置项目点击监听器
     * @param listener 监听器实例
     */
    public void setOnItemClickListener(OnItemClickListener listener) {
        this.listener = listener;
    }

    /**
     * 列表项点击监听器接口
     */
    public interface OnItemClickListener {
        void onItemClick(ListItem item, int position);
    }

    /**
     * 列表项ViewHolder
     * 用于缓存列表项中的视图
     */
    static class ListViewHolder extends RecyclerView.ViewHolder {
        ImageView iconView;
        TextView titleText;
        TextView descriptionText;

        ListViewHolder(@NonNull View itemView) {
            super(itemView);
            // 查找并保存视图引用
            iconView = itemView.findViewById(R.id.iconView);
            titleText = itemView.findViewById(R.id.titleText);
            descriptionText = itemView.findViewById(R.id.descriptionText);
        }
    }
} 